eventcontrollerkey: Add function to forward stuff elsewhere
authorCarlos Garnacho <carlosg@gnome.org>
Sun, 11 Mar 2018 12:38:19 +0000 (13:38 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 16 Jul 2018 13:43:43 +0000 (15:43 +0200)
gtk/gtkeventcontrollerkey.c
gtk/gtkeventcontrollerkey.h

index 13015312c7235ba4949b612bbdbbbd9e1df2f0fd..2469f7da3c457891d76acef60ce47a590b7f76c2 100644 (file)
@@ -21,7 +21,7 @@
 
 #include "gtkintl.h"
 #include "gtkprivate.h"
-#include "gtkwidget.h"
+#include "gtkwidgetprivate.h"
 #include "gtkeventcontrollerprivate.h"
 #include "gtkeventcontrollerkey.h"
 #include "gtkbindings.h"
@@ -215,3 +215,22 @@ gtk_event_controller_key_get_im_context (GtkEventControllerKey *controller)
 
   return controller->im_context;
 }
+
+gboolean
+gtk_event_controller_key_forward (GtkEventControllerKey *controller,
+                                  GtkWidget             *widget)
+{
+  g_return_val_if_fail (GTK_IS_EVENT_CONTROLLER_KEY (controller), FALSE);
+  g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
+  g_return_val_if_fail (controller->current_event != NULL, FALSE);
+
+  if (!gtk_widget_get_realized (widget))
+    gtk_widget_realize (widget);
+
+  if (_gtk_widget_captured_event (widget, (GdkEvent *) controller->current_event))
+    return TRUE;
+  if (gtk_widget_event (widget, (GdkEvent *) controller->current_event))
+    return TRUE;
+
+  return FALSE;
+}
index 025aa336ef0aef5c4dbdec1098f3774c68cfb239..00dc2a5298c353ae9282858d93ec7399a0988a08 100644 (file)
@@ -52,6 +52,10 @@ void                gtk_event_controller_key_set_im_context (GtkEventControllerK
 GDK_AVAILABLE_IN_3_24
 GtkIMContext *      gtk_event_controller_key_get_im_context (GtkEventControllerKey *controller);
 
+GDK_AVAILABLE_IN_3_24
+gboolean            gtk_event_controller_key_forward        (GtkEventControllerKey *controller,
+                                                             GtkWidget             *widget);
+
 G_END_DECLS
 
 #endif /* __GTK_EVENT_CONTROLLER_KEY_H__ */